/**
 * @fileOverview
 * @suppress {duplicate}
 */


/**
 * @param {string} name
 * @param {*} body
 * @param {string} type
 * @constructor
 */
function Notification (name, body, type)
{
	this.name= name;
	this.body= body;
	this.type= type;
};

/**
 * @return {string}
 */
Notification.prototype.getName= function ()
{
	return this.name;
};

/**
 * @param {*} body
 * @return {void}
 */
Notification.prototype.setBody= function (body)
{
	this.body= body;
};

/**
 * @return {*}
 */
Notification.prototype.getBody= function ()
{
	return this.body;
};

/**
 * @param {string} type
 * @return void
 */
Notification.prototype.setType= function (type)
{
	this.type= type;
};

/**
 * @return {string}
 */
Notification.prototype.getType= function ()
{
	return this.type;
};

/**
 * @override
 * @return {string}
 */
Notification.prototype.toString= function ()
{
	// TODO why use getName accessor rather than property access?
	var msg = "Notification Name: "+this.getName();
	// TODO establish why use direct access rather than accessor? Why manually convert to string when this is automatic in ECMAScript
	msg += "\nBody:"+(( this.body == null )?"null":this.body.toString());
	// TODO same as above, except in relation to type property
	msg += "\nType:"+(( this.type == null )?"null":this.type);
	return msg;
	
	
	//return 'Notification Name: ' + this.name 
	//+ '\nBody:' + this.body | 'null'
	//+ '\nType:' + this.type | 'null'
};

/**
 * @private
 * @type {string}
 */
Notification.prototype.name= null;

/**
 * @private
 * @type {*}
 */
Notification.prototype.body= null;

/**
 * @private
 * @type {string}
 */
Notification.prototype.type= null;

